<?php

require_once dirname(__FILE__).'/../lib/informesxingresosGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/informesxingresosGeneratorHelper.class.php';

/**
 * informesxingresos actions.
 *
 * @package    gescell
 * @subpackage informesxingresos
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
 */
class informesxingresosActions extends autoInformesxingresosActions
{

    public function executeEdit(sfWebRequest $request)
    {
       $this->informesxingresos = $this->getRoute()->getObject();
       $this->form = $this->configuration->getForm($this->informesxingresos);
       $modelosxingresos_id = $this->informesxingresos->getModelosxingresosId();
       $this->form->listadefallas  = modelosxingresosPeer::getTrabajosRealizados($modelosxingresos_id);
       $this->form->modelosxingresos = modelosxingresosPeer::retrieveByPK($modelosxingresos_id);

    }



    public function executeNew(sfWebRequest $request)
    {
        $this->form = $this->configuration->getForm();
        $this->informesxingresos = $this->form->getObject();
        $idUser = $this->getUser()->getGuardUser()->getId();
        $this->form->setDefault('sf_guard_user',$idUser);
    }
    public function executeBuscarequipos(){
         $this->forward404unless($this->getRequest()->isXmlHttpRequest());
         $buscar = $this->getRequest()->getparameter('buscar');
         $criterio = $this->getRequest()->getparameter('criterio');
         if ($criterio == 0){
             $this->lista_de_equipos = DbFinder::from('modelosxingresos')->
                 where('imei','LIKE','%'.$buscar.'%')->
                 where('reparado','<>',true)->
                 find();    
         }
         else{
             $this->lista_de_equipos = DbFinder::from('modelosxingresos')->
                 where('ordenesservicio_id','LIKE','%'.$buscar.'%')->
                 where('reparado','<>',true)->
                 find();
         }
         
        if($this->lista_de_equipos ){
          return $this->renderpartial('resultado_busqueda_equipos',array('dibujar' => true, 'lista_de_equipos' => $this->lista_de_equipos));
        }
        else{
            $this->getResponse()->setStatusCode(404);
            $this->mensaje = 'No existen resultados que coincidan con su criterio de busqueda o no existen reparaciones pendientes, Puede Proseguir con las siguientes Opciones: ';
            return $this->renderpartial('accion_de_finalizacion',array('mensaje'=> $this->mensaje, 'dibujar' => true, 'direccion' => 1 ));
        }

    }
    public function executeGuardar(){
        $this->forward404unless($this->getRequest()->isXmlHttpRequest());
        $modelosxingresos_id =  $this->getRequest()->getparameter('modelosxingresos_id');
        $listadeprecios_id =    $this->getRequest()->getparameter('listadeprecios_id');
        $sf_guard_user =        $this->getRequest()->getparameter('sf_guard_user');
        $cantidad =             $this->getRequest()->getparameter('cantidad');
        $observacion =          $this->getRequest()->getparameter('observacion');
        $equipo = new modelosxingresos(); $equipo = modelosxingresosPeer::retrieveByPK($modelosxingresos_id);
        if(!$equipo->getReparado()){
            if ($this->verificarDetalles()){
                    $informesxingresos = new informesxingresos();
                    $informesxingresos->setModelosxingresosId($modelosxingresos_id);
                    $informesxingresos->setpreciosxmodelosid($listadeprecios_id);
                    $informesxingresos->setSfGuardUser($sf_guard_user);
                    $informesxingresos->setCantidad($cantidad);
                    $informesxingresos->setObservaciones($observacion);
                    $informesxingresos->save();
                    //$modelosxingresosPeer = new modelosxingresosPeer();
                    $this->form = new informesxingresosForm();
                    $this->form->listadefallas  = modelosxingresosPeer::getTrabajosRealizados($modelosxingresos_id);
                    $this->form->modelosxingresos = modelosxingresosPeer::retrieveByPK($modelosxingresos_id);
                    return $this->renderpartial('edit_trabajos_realizados');
            }
            else{
                $this->getResponse()->setStatusCode(404);
                return $this->rendertext('Error: Dato Repetido');
            }
        }
        else{
          $this->mensaje = 'Este Registro ya esta Guardado, Puede Proseguir con las siguientes Opciones: ';
          return $this->renderpartial('accion_de_finalizacion', array('mensaje' => $this->mensaje,'dibujar' => true, 'direccion' => 1 ));
        }
        
    }
    public function executeBuscarDetallesEquipo(){
        $this->forward404unless($this->getRequest()->isXmlHttpRequest());
        $modelosxingresos_id =  $this->getRequest()->getparameter('modelosxingresos_id');
        $equipo = new modelosxingresos; $equipo = modelosxingresosPeer::retrieveByPK($modelosxingresos_id);
        if(!$equipo->getReparado()){
            $modelosxingresosPeer = new modelosxingresosPeer();
            return $this->renderpartial('trabajos_realizados', array('dibujar' => true, 'listadefallas' => $modelosxingresosPeer->getTrabajosRealizados($modelosxingresos_id)));
        }
        else{
            $this->mensaje = 'Este Registro ya esta Guardado, Puede Proseguir con las siguientes Opciones: ';
            return $this->renderpartial('accion_de_finalizacion', array('mensaje' => $this->mensaje,'dibujar' => true, 'direccion' => 1 ));
        }
    }
    public function executeFinalizar_reparacion(){
        $this->forward404unless($this->getRequest()->isXmlHttpRequest());
        $this->modelosxingresos_id = $this->getRequest()->getParameter('modelosxingresos_id');
        $Finalizacion = $this->getRequest()->getParameter('Finalizacion');
        $modelosxingresos = new modelosxingresos();
        $modelosxingresos = modelosxingresosPeer::retrieveByPK($this->modelosxingresos_id);
        if(!$modelosxingresos->getReparado()){
           $modelosxingresos->setFechareparacion(time());
           $modelosxingresos->setReparado(true);
           $modelosxingresos->save();
           $this->mensaje = 'Registro Guardado Exitosamente, Puede Proseguir con las siguientes Opciones: ';
           return $this->renderpartial('accion_de_finalizacion', array('mensaje' => $this->mensaje, 'dibujar' => true , 'direccion' => 0, 'modelosxingresos_id' => $this->modelosxingresos_id));
        }
        else{
           $this->mensaje = 'Este Registro ya se Guardo, Puede Proseguir con las siguientes Opciones: ';
           return $this->renderpartial('accion_de_finalizacion', array('mensaje' => $this->mensaje, 'dibujar' => true, 'direccion' => 1));
        }
    }
    public function executeListImprimir()
    {
                $modelosxingresos_id=$this->getRequest()->getParameter('modelosxingresos_id');
  	        $pdf = informes::CrearReporte('Informe Técnico');
                $criteria = new Criteria();
                $modelos = new modelosxingresos();
                $criteria->add(modelosxingresosPeer::ID,$modelosxingresos_id);
                $modelos = modelosxingresosPeer::doSelect($criteria);
                $modelosPeer = new modelosxingresosPeer();
                $detalles = $modelosPeer->getTrabajosRealizados($modelosxingresos_id);
                $pdf->SetFont('Arial','',7);
		$pdf->SetFillColor(255,255,255);
		$pdf->SetTextColor(0);

	      
		   foreach($modelos as $modelo){
			    
			    $nro = $modelo->getId();
                            $pdf->Cell(162,20,'ID: '.$nro,0,1,'R',1);
			    $modeloid= $modelo->getmodelos();
                            $pdf->Cell(100,7,'Marca y Modelo: '.$modeloid,1,0,'L',1);
			    $imei= $modelo->getImei();
                            $pdf->Cell(62,7,'IMEI: '.$imei,1,1,'R',1);
			    $ordenesservicio= $modelo->getOrdenesservicioId();
                            $pdf->Cell(100,7,'Orden de Servicio: '.$ordenesservicio,1,0,'L',1);

                            $pdf->Cell(62,7,'Fecha de Reparacion: '.$modelo->getFechareparacion('d/m/y'),1,1,'R',1);
			    $propietario = $modelo->getPropietario();
                            $pdf->Cell(162,7,'PROPIETARIO: '.$propietario,1,1,'L',1);
		   }
 	        //Creacion de los Encabezados para los detalles
                $pdf->SetTextColor(0);
	        $pdf->SetFillColor(255,255,255);
		$pdf->SetLineWidth(.1);
		$pdf->SetFont('Arial','B',8);

		$pdf->Cell(180,2,'',0,1,'C',0);
		$pdf->SetFillColor(120,120,120);
		$pdf->SetFont('Arial','B',6);
	        $pdf->Cell(8,5,'ITEM',1,0,'C',1);
		$pdf->SetFont('Arial','B',8);
	        $pdf->Cell(75,5,'DESCRIPCION',1,0,'C',1);
		$pdf->SetFont('Arial','B',6);
		$pdf->Cell(25,5,'PRECIO UNITARIO',1,0,'C',1);
		$pdf->Cell(12,5,'CANTIDAD',1,0,'C',1);
		$pdf->Cell(10,5,'%I.V.A',1,0,'C',1);
		$pdf->Cell(25,5,'IMPUESTO',1,0,'C',1);
		$pdf->Cell(25,5,'SUB TOTAL',1,1,'C',1);
		$pdf->SetFillColor(255,255,255);
		$pdf->SetFont('Arial','B',8);

		//Comento desde aca hasta quien sabe donde
                  $e=1;$precio = 0; $totaliva =0;
		  foreach ($detalles as $detalle)
		  {
			$pdf->Cell(8,5,$e++,1,0,'C',1);
			$descrip = utf8_decode($detalle['detalleinforme']) ;
                        $pdf->Cell(75,5,$descrip,1,0,'L',1);
			$precio += $detalle['precio']*$detalle['cantidad'];
			$pdf->Cell(25,5,$detalle['precio'],1,0,'R',1);
			$canti = $detalle['cantidad'];
                        $pdf->Cell(12,5,$canti,1,0,'C',1);
                        $iva = $detalle['iva'];
                        $totaliva += ($detalle['precio']*$canti*($iva/100));
                        $pdf->Cell(10,5,$iva,1,0,'C',1);
			$pdf->Cell(25,5,($detalle['precio']*$canti*($iva/100)),1,0,'R',1);
			$pdf->Cell(25,5,($detalle['precio']*$canti*(1 + $iva/100)),1,1,'R',1);
			
	          }
		  /*convercion en letras*/
	       /*
               $tt = $total;
               $tt = $tt+0.009;
               $Numero = intval($tt);
               $Decimales = $tt - Intval($tt);
               $Decimales= $Decimales*100;
               $Decimales= Intval($Decimales);
               $x=$this->NumerosaletrasFacturas($Numero);
               $y=$this->NumerosaletrasFacturas($Decimales);
               $v=($x).($y).('guaranies');
		  /*convercion en letras*/
		
		$pdf->Cell(180,2,'',0,1,'C',0);
		$pdf->SetFillColor(120,120,120);
                $pdf->SetFillColor(255,255,255);
		$pdf->Cell(160,5,'Totales de la Orden de Servicio',0,1,'C',1);
                $pdf->SetLineWidth(.1);
		
		$pdf->Cell(80,5,'TOTAL A NETO:',1,0,'L',1);
		$pdf->Cell(80,5,$precio.' Gs',1,1,'R',1);

                $pdf->Cell(80,5,'TOTAL I.V.A:',1,0,'L',1);
                $pdf->Cell(80,5,$totaliva.' Gs',1,1,'R',1);
		$pdf->Cell(80,5,'TOTAL A PAGAR:',1,0,'L',0);
		$pdf->Cell(80,5,($precio + $totaliva).' Gs',1,0,'R',0);
	        
		$pdf->Output();
	        return sfView::NONE;
  }
  public function executeBorrar_detalle(){
       $modelosxingresos_id =  $this->getRequest()->getparameter('modelosxingresos_id');
       $modelosxingresos = new modelosxingresos();
       $modelosxingresos = modelosxingresosPeer::retrieveByPK($modelosxingresos_id);
       if(!$modelosxingresos->getReparado()){
           $listadeprecios_id   =  $this->getRequest()->getparameter('listadeprecios_id');
           $criteria = new Criteria();
           $criteria->add(informesxingresosPeer::MODELOSXINGRESOS_ID, $modelosxingresos_id);
           $criteria->add(informesxingresosPeer::PRECIOSXMODELOS_ID, $listadeprecios_id);
           $informesxingresos = new informesxingresos();
           $informesxingresos = informesxingresosPeer::doSelectOne($criteria);
           $informesxingresos->delete();
           //$modelosxingresosPeer = new modelosxingresosPeer();
           $this->form = new informesxingresosForm();
           $this->form->listadefallas  = modelosxingresosPeer::getTrabajosRealizados($modelosxingresos_id);
           $this->form->modelosxingresos = modelosxingresosPeer::retrieveByPK($modelosxingresos_id);
           return $this->renderpartial('edit_trabajos_realizados');
       }
       else{
           $this->mensaje = 'Este Registro ya se Guardo, Puede Proseguir con las siguientes Opciones: ';
           return $this->renderpartial('accion_de_finalizacion', array('mensaje' => $this->mensaje, 'dibujar' => true, 'direccion' => 1));
       }
  }
  public function verificarDetalles(){
      $modelosxingresos_id =  $this->getRequest()->getparameter('modelosxingresos_id');
      $listadeprecios_id   =  $this->getRequest()->getparameter('listadeprecios_id');
      $criteria = new Criteria();
      $criteria->add(informesxingresosPeer::MODELOSXINGRESOS_ID, $modelosxingresos_id);
      $criteria->add(informesxingresosPeer::PRECIOSXMODELOS_ID, $listadeprecios_id);
      $resutaldo = new informesxingresos();
      $resultado = informesxingresosPeer::doSelectOne($criteria);
      if (!$resultado){
          return true;
      }
      else{
          return false;
      }
  }
  
}
